#ifndef SENSOR_AGGREGATOR_H
#define SENSOR_AGGREGATOR_H

#include <stdint.h>

// 传感器类型枚举
typedef enum {
    TEMP_SENSOR,
    HUMI_SENSOR,
    LIGHT_SENSOR,
    SOIL_SENSOR,
    SENSOR_TYPE_COUNT
} SensorType;

// 聚合统计结构体
typedef struct {
    float max;
    float min;
    float sum;
    uint32_t count;
    uint32_t last_update;
} SensorMetric;

// 聚合器主体结构
typedef struct {
    SensorMetric metrics[SENSOR_TYPE_COUNT];
    uint32_t window_interval;  // 聚合窗口时间（毫秒）
    uint32_t window_start;
} SensorAggregator;

// 初始化聚合器
void agg_init(SensorAggregator* agg, uint32_t interval_ms);

// 更新传感器数据
void agg_update(SensorAggregator* agg, SensorType type, float value, uint32_t timestamp);

// 检查是否到达时间窗口
int agg_check_window(SensorAggregator* agg, uint32_t current_time);

// 生成聚合报告
const char* agg_generate_report(SensorAggregator* agg, char* buffer, size_t buf_size);

// 重置统计
void agg_reset(SensorAggregator* agg);

#endif